#include<stdio.h>
#include<stdlib.h>
using namespace std;

typedef struct node{
    int data;
    struct node *next;
}*ls;
ls newNode(){
    ls node=(ls)malloc(sizeof(struct node));
    scanf("%d",&node->data);
    node->next=NULL;
    return node;
}
ls create_ls(ls head){
    if(head==NULL){
        ls node=newNode();
        return node;
    }
    //尾插法
    ls p=head;
    ls node=newNode();
    while(p->next){
        p=p->next;
    }
    p->next=node;
    return head;
}
ls del(ls head,int x){
    ls p=head,q=NULL;
    while(p){
        while(p&&p->data!=x){
            q=p;
            p=q->next;
        }
        if(p){
            if(q)//q为非头节点
                q->next=p->next;//删除p
            else//p为头节点
                head=p->next;
        }
    }
    return head;
}
void output(ls head){
    ls p=head;
    while(p){
        printf("%d->",p->data);
        p=p->next;
    }
    printf("\n");
}
int main(){
    ls head=NULL;
    for(int i=0;i<5;i++){
        head=create_ls(head);
    }
    output(head);
    head=del(head,2);
    output(head);
    return 0;
}